package _11_位运算;

public class _405_数字转换为十六进制数 {

    // char类型字面量为char，打印的就是字符，如果和某个数值相加，那么就会转变为int类型，打印出来的就是int

    // 一个16进制对应4个二进制，我们只需要拿出每4个二进制数，& oxf，该组就是16进制的10进制表示
    public String toHex(int num) {
        if (num == 0) {
            return "0";
        }
        StringBuilder builder = new StringBuilder();

        for (int i = 7; i >= 0; i--) {
            int val = num >> (i * 4) & 0xf;
            if (builder.length() > 0 || val != 0) {
                builder.append( val < 10? (char)('0' + val): (char)('a' + val - 10));
            }
        }
        return builder.toString();
    }
}
